<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8">
	<link rel="stylesheet" href="css/master.css" type="text/css" media="screen" charset="utf-8">
	<script src="js/jquery.js" type="text/javascript"></script>
	<script src="js/math.js" type="text/javascript"></script>
	<script type="text/javascript" src="js/shCore.js"></script> 
	<script type="text/javascript" src="js/shBrushJScript.js"></script> 
	<script type="text/javascript" src="js/shBrushCpp.js"></script> 
	<script type="text/javascript" src="js/shBrushPython.js"></script> 
	<link type="text/css" rel="stylesheet" href="css/shCoreDefault.css"/> 
	<link type="text/css" rel="stylesheet" href="css/shThemeEclipse.css"/> 
	<script type="text/javascript">SyntaxHighlighter.all();</script>
<title>new_in_vim73</title>

</head>
<body>
	<div id="header">
		<h1 id="heading">Memory Snippets</h1>
		<div id="sitenav">
			<ul>
				<li><a href="index.html">Home</a></li>
				<li><a href="index.html">Blog</a></li>
				<li><a href="index.html">Wiki</a></li>
				<li><a href="index.html">About</a></li>
			</ul>
		</div>	
	</div>
	<div id="content">
<div id="page">
<h2 id="toc_0.1">隐藏文字(Conceal text)</h2>

<p>
Vim支持语法高亮，有的语法高亮需要一些额外的标注符，它们并不是文本内容的一部分。比如用VOoM实现带折叠的双栏树状文本管理时，需要用{{\{ \{{\{12 这样的符号表示标题级别。这些额外的标注符，最好比较低调。比如，上文就采用了零宽断言（:h zero-width）或contain来区分标注符，然后用link 到 ignore（文字前景色=背景色）的方式来“不显示”。但这里的不显示，只是一种前背景同色的障眼法。相比之下，Vim 7.3的conceal text具备了更强大的功能；某种程度上，相当于inline folding。
2.1 conceal text 功能介绍
</p>

<p>
Conceal text，直译为“隐藏文字”。不过，译为“可隐藏文字”更符合原意。因为，它的最终效果——是否隐藏、如何隐藏——取决于如下属性/参数：
</p>

<p>
① syn命令的conceal参数
语句：sy match test_conceal "(善用佳软.*)" conceal
表示：括号内以善用佳软开头的字符串，命名为 test_conceal 组，具备了conceal属性。
更多参见：:h conceal
</p>

<p>
② conceallevel(简称cole)选项值
具备conceal属性的字符串，并不一定是隐藏的。其具体表现取决于conceallevel的值。
☆ 0：默认值，显示。 因此，只设定conceal，并没有任何隐藏效果。
☆ 1：短线高亮。 匹配的字符串缩略显示为一个“-”符号（取决于listchars设定），并采用conceal组的高亮方案。
☆ 2：不显示，除非定义了cchar变量。 举个例子就明白了，如下语句
:syntax match Entity "&amp;amp;"?conceal cchar=&amp;
可以把实体字符显示为原字符，更易于阅读。
☆ 3：完全不显示。
更多参见：:h cole
</p>

<p>
③ concealcursor(简称cocu)参数
该值默认为空，效果就是无论如何隐藏，当光标位于该行时，conceal文字仍会显示。
如果想取消此效果，可设定相应值：n v i c。vim帮助文件中的设定值为nc。
更多参见：:h cocu
2.2 conceal text 应用举例
</p>

<p>
上面的文字已经隐含了两个例子：
</p>
<ul>
<li>
任何额外标记符的隐藏，如Voom中的 {{\{1。还可扩展到vim的帮助文件、vimwiki……
</li>
<li>
html源代码中，实体字符的还原显示。甚至可以把所有html的标签设为隐藏。
</li>
</ul>

<p>
我能想到的例子：
</p>
<ul>
<li>
用来背单词。比如把英文单词后面的所有释义设为隐藏；光标移在该行时，再显示释义。
</li>
<li>
txt格式的读书笔记：参见下面的视频。
</li>
</ul>
<p>
3. 相对行号（'relativenumber' 'rnu'）
</p>

<p>
以前，输入 :set nu 会显示行号；现在，输入 :set rnu 会显示相对行号。
所谓相对行号，就是光标所在行为第0行，然后，向上向下分别1、2、3……行标示。
其主要用途，可方便计算移动距离。
但由于翻页/滚屏时，当前行会移动，所以，相对行号只能在一屏内使用。
操作方法：
:set rnu
:set nornu
（nu与rnu不能同时使用）
</p>

<p>
更多说明：:h rnu
4. 彩色列（colorcolumn）
</p>

<p>
例1：
:set cc=10,20,30
表示把第10、20、30列，进行高亮。
</p>

<p>
例2:
:set cc=-20,+10,120
表示把 textwidth-20、textwidth+10、第120列，进行高亮。
</p>

<p>
例3:
:hi colorcolumn guibg=lightgreen
定义高亮列为亮绿色。
</p>

<p>
功能说明：
</p>
<ul>
<li>
cc列标可以是绝对值，也可以是相对值，如例2所示。
</li>
<li>
会降低屏幕刷新速度。
</li>
<li>
对换行、中文，可能会不连续。
</li>
</ul>

<p>
使用说明：
</p>
<ul>
<li>
我觉得colorcolumn有一个最实用的功能，set cc=81，可以提醒自己写得代码别超过80列 （by ankyhe）
</li>
</ul>
	</div>
	</div>
	<div class="clear"></div>
	<div id="footer">
		© Copyright 2011 @liyiqiang. All Rights Reserved.
	</div>
</body>
</html>
